package nan.LinkedList;

public class Main {
    //通过这个方法，创建出一个固定内容的链表
    public static Node createList(){
        Node a=new Node(1);
        Node b=new Node(2);
        Node c=new Node(3);
        Node d=new Node(4);
        a.next=b;
        b.next=c;
        c.next=d;
        d.next=null;
        //使用头结点代表整个链表，让方法把头结点返回回去就行了。
        return a;
    }
    public static void main(String[] args) {
        Node head=createList();//调用方法获得头结点
        //链表遍历
        for(Node cur=head;cur!=null;cur=cur.next){
            System.out.println(cur.val);
        }
//        //遍历带傀儡节点的链表
//        for(Node cur=head.next;cur!=null;cur=cur.next){
//            System.out.println(cur.val);
//        }
        //找链表最后一个节点：最后一个节点的特征就是next为null
        Node cur=head;
        while(cur.next!=null){
            cur=cur.next;
        }
        //一旦循环结束，cur就指向了链表的最后一个节点
        System.out.println(cur.val);
        //取链表的第n个节点(从1开始算的）
        int N=3;
        Node cur1=head;
        for(int i=1;i<N;i++){
            cur1=cur1.next;
        }
        //获取链表长度
        int count =0;
        for(Node cur2=head;cur2!=null;cur2=cur2.next){
            count++;
        }
        System.out.println(count);
        //遍历链表，查找链表上是否存在某个元素
        int toFind=5;
        Node cur3=head;
        for(;cur3!=null;cur3=cur3.next){
            if(cur3.val==toFind){
                break;
            }
        }
        if(cur3!=null){
            System.out.println("找到");
        }else{
            System.out.println("没找到");
        }
    }
}
